Notes:Learning Spatiotemporal Features with 3D Convolutional Networks

Notes:Learning Spatiotemporal Features with 3D Convolutional Networks

Abstract:

本文提出了一个简单有效的方案,使用3D卷积在大规模视频中来学习空间时序(Spatiotemporal)特征,本文的贡献如下:

  • 相比于2D卷积,3D卷积更加适合学习空间时序特征;
  • 作者通过实验不同的网络结构,发现3*3*3的卷积核是最好的网络结构;
  • 作者通过学习到的C3D特征去作为视频的描述子,采用简单的线性分类器,在4个benchmarks上,取得了比SOTA好的结果,同时在另外2个benchmarks上取得了和SOTA相当的结果;
  • C3D学习到特征是压缩的、具有判别性的,通过PCA降维到10维,也能在UCF101上达到52.8%的准确度,相比于其他方法学到的特征,C3D特征更加压缩和具有判别性,在现实环境中可以更容易提高准确度和计算复杂度的trade-off;

Introduction

作者表明虽然在不同的视频任务领域,存在很多好的解决方案,但是仍然需要一个通用的视频描述子(generic video desciptor),这样会以一种统一的方式去解决大规模视频任务中的问题。

对于一个通用的视频描述子,以下简称GVD,作者认为有效的GVD应该具有如下四个性质:

  1. 通用性,这样才能才具有判别性的同时可以表示不同类型的视频,例如自然风景、体育运动、电视节目、电影等;
  2. 压缩性,因为当处理数百万个视频时,压缩的特征可以跟有效的处理、存储和检索;
  3. 计算有效性,在现实系统中,我们需要每分钟处理数千个视频;
  4. 易于实现,经过该描述子提取的特征,即使采用简单的分类器,例如线性分类器,也应该能取得不错的效果;

使用深度学习提取的图像特征不能直接适用于视频任务,因为这些图像特征缺乏对动作的建模。

作者人为本文的贡献如下:

  • 作者做了一系列实验,包括视频分类、动作识别、场景识别和对象检测等,表明了3d深度卷积网络是好的模型来对外观(apperance)和动作(motion)同时建模;
  • 作者通过有限的实验探索了各种不同的3d卷积网络的结构(kernel的大小不同),最终发现3*3*3的kernel是经验最优的结构,这一点和2D卷积中kernel的选取经验相似;
  • 使用作者提出的C3D网络结构提取的特征,使用简单的线性SVM分类器,在4个不同的任务和6个不同的benchmark中取得了最优的效果;

Related Work

作者回顾了一些传统的视频描述子的方法,重点提到了目前最好的称为iDT的方法,并指出这个方法计算量大,难以扩展到大规模视频的任务中。

随着机器的计算力提高和数据量的增多,卷积神经网络在很多任务中有所突破。有些人利用深度学习学习到Image特征,通过迁移学习的方式在一些任务上取得了不错的效果,但是这些方法都是不适用于视频特征学习的。

在作者这篇文章之前,有几篇文章已经开始或多或少的提到了利用3D卷积去进行视频特征的学习,其中一篇文章是2013年的 3d convolutional neural networks for human action recognition,文章利用预处理的方式将视频中的头和身体进行分割,然后将分割后的视频送入3d卷积网络中做动作识别;另一篇是2014年Karpathy等人训练了深度网络去进行视频分类。

Learning features with 3D ConvNets

3D Convolution、3D Pooling、search for Network Architecture

3D Convolution VS 2D Convolution

和2D卷积不同,3D卷积有能力通过3D卷积和3D池化对时间信息进行建模。

2D卷积和3D卷积的区别

image.png | left | 747x170

在一张图片上进行一次2D卷积,输出是一张图片(Feature Map),在一个视频进行一次2D卷积,输出同样是一张图片(Feature Map),在一个视频上进行一次3D卷积,输出则是另一个立方体,这个立方体保留了输入信号的时序信息。

总结: 2D卷积在每次卷积和池化和都丢失了时序信息,而3D卷积和池化则保留了时序信息。

search for Network Architecture

因为训练这种大型的网络是十分耗费时间的,因此作者根据2D卷积的经验,空间维度的卷积核采用3*3,而时间维度的卷积深度则通过不同的实验来选择,因此3D卷积核的大小为d*3*3。

为了找到时间维度上最优的卷积深度d,作者在中等规模的UCF101数据集上进行了3类实验:

  • 全局采用一致的时间维度卷积深度d;
  • 从前往后,时间维度卷积深度d逐层递增,3-3-5-5-7;
  • 从前往后,时间维度卷积深度d逐层递减,7-5-5-3-3;

作者在搜索最优的时间卷积深度的时候,由于是在中等规模数据集上进行的,网络结构为:5层卷积和2层全连接。
卷积层的配置逐层如下:

  • 64 kernels
  • 128 kernels
  • 256 kernels
  • 256 kernels
  • 256 kernels

所有的卷积层在空间和时间维度都采用SAME padding,因此卷积前后的size是不变的。每一层卷积后都接一层3D pooling层,除了第一层池化层的核为1*2*2外,其余池化层全部为2*2*2,因此经过池化层的size会缩小为原来的1/8。

说明:作者强调了第一层池化层在时间维度不进行池化有两个目的:

  • 不想过早的合并时序信息;
  • 输入是16帧图像,因此时间维度最多进行4次池化;

image.png | left | 400x220

最终作者发现时间维度的卷积深度为3的时候,网络性能最佳,因此3*3*3是经验最优的3D卷积核,这也和2D卷积的3*3卷积核是统一的。

Spatiotemporal Feature learning

为了进行空间时序特征的学习,作者在一个大规模的数据集Sport-1M上进行了训练。Sport-1M包含100万个视频,每个视频属于487种运行类别种的一种,和UCF101相比,Sports-1M的视频数量是它的100倍,类别数目是它的5倍。因此作者也设计了容量更大的网络结构,如下所示:

image.png | left | 747x127

网络一共8层卷积层,每一层紧接一个池化层,最后两个全连接层。
作者的实验结果如下:

image.png | left | 747x139

  • C3D视频描述子:在Sport-1M上训练过的网络可以用来作为视频分析任务的特征提取器,因为该c3d视频描述子具有很多优良的性质;
  • C3D网络学习到了什么?
    • 作者通过反卷积可视化技术,观察到对于视频的前几帧,网络学习到了外观apperance,在接下来的图像帧中,网络重点学习到了显著的动作。这表明和2D卷积网络不同,3D卷积网络选择性的学习到了动作和外观特征,而这些特征对于视频分类等问题,具有很好的判别性。

Experiment

作者后续又先后在

  • Action Recognition
  • Action Similarity Labeling
  • Scene and Object Recognition
    等任务中进行了实验,实验结果几乎都是属于SOTA结果,这也证明了C3D网络是一种优秀的网络结构用于处理视频任务。

作者其中还通过可视化技术t-SNE,将C3D学习到特征通过特征嵌入的方式,和ImageNet的特征进行了对比,表明了C3D学习到特征是压缩的。

image.png | center | 401x295

image.png | center | 364x274

Runtime Analysis

作者通过和传统方法iDT、深度学习方法Temporal Stream Network TSN方法的运行时间做了对比,表明c3d网络是高效的、计算成本低的方法。这也表明c3d可以很好的运行在现实系统中,因此具有很好的现实意义。

image.png | center | 534x232

Conclusion

  • C3D能同时对空间和时间信息建模;
  • C3D特征是有效的、通用的、压缩的且易于实现的;
  • C3D网络中
    • 浅层的卷积层学习到了低层次的运动模式:例如颜色的改变、移动的边缘和边缘方向的改变;
    • 中层的卷积层学习到了高层次、更大的运动模式:例如纹理的移动、身体躯干的移动、轨迹的移动等;
    • 高层的卷积层学习到了更复杂的运行模式:例如移动的圆形物体、移动的自行车形状的物体;

image.png | left | 747x644

image.png | left | 747x582